home *** CD-ROM | disk | FTP | other *** search
/ Game Cracker (Expanded Edition) / Game Cracker (Expanded Edition).iso / cracks / SV_PANDM.ZIP / Pandemonium.txt < prev    next >
Encoding:
Text File  |  1996-01-09  |  6.7 KB  |  140 lines

  1.  
  2. Free Information Xchange '98 presents:
  3.  
  4. Pandemonium - CD crack by Static Vengeance
  5.  
  6. Requirements
  7. Hex editor and full install
  8.  
  9.     Pandemonium is a platform jumping game in simular fashion to the mario jumpers in the
  10. nintendo world.  It's alright, but what really stands out is the graphics in the 3Dfx version,
  11. it looks awesome!  However, as you can see from this article, it does have one problem and it
  12. comes in the form of a CD check.  Using my favorite tool to crack Win95 programs, W32Dasm from
  13. URSoft, I'll show you how to defeat that check.  There are two versions of the program that
  14. come with the CD.  The file called pandy.exe is the standard program, while the file pandy3.exe
  15. is the 3Dfx enhanced version.  It's that version I will be using for the code listings, so if
  16. you want to follow along you will need to use pandy3.exe also.  I have included the edit for
  17. pandy.exe below.
  18.     Start up W32Dasm and disassemble PANDY3.EXE from where ever it is installed.  Once
  19. W32Dasm has finished it's process and is ready, go up to the title bar select "Refs" and choose
  20. "String data references".  From here grab the slider bar and scroll down looking to the string
  21. "The Pandemonium CD must be in "  You did run the program once without the CD in to see how it
  22. asked for it, right?   To continue, double click on the string and it puts you in the middle of
  23. the CD check routine.  So let's take a look at the code and see what it does:
  24.  
  25. * Referenced by a CALL at Address:
  26. |:00436015                                                      <-- who made the call
  27. |
  28. :00427C60 A1FCB14600              mov eax, dword ptr [0046B1FC]
  29. :00427C65 85C0                    test eax, eax
  30. :00427C67 741C                    je 00427C85
  31. :00427C69 E8324EFEFF              call 0040CAA0
  32.  
  33. * Possible StringData Ref from Data Obj ->"The Pandemonium CD must be in "    <-- Don't want to
  34.                                         ->"the CD-ROM drive before you can "  <-- ever see this
  35.                                         ->"play."
  36.                                   |
  37. :00427C6E 6810CC4600              push 0046CC10
  38. :00427C73 E878000000              call 00427CF0
  39. :00427C78 83C404                  add esp, 00000004
  40. :00427C7B 6A00                    push 00000000
  41.  
  42. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  43. |:00427C39(C)
  44. |
  45. :00427C7D E89E3D0300              call 0045BA20
  46. :00427C82 83C404                  add esp, 00000004
  47.  
  48. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  49. |:00427C41(C), :00427C67(C)
  50. |
  51. :00427C85 C3                      ret
  52.  
  53.     That's one short and straight forward routine.  So let's check the caller, the above
  54. routine is called once from 436015.  However that section of code is in a routine short
  55. enough to list out the entire routine.  Listing this code reveals:
  56.  
  57. * Referenced by a CALL at Addresses:
  58. |:00407084   , :004070D7   , :004071F3   , :0040727E   , :004072CC   
  59. |:00407319   , :004073A5   , :00407E94   , :00407EEC   , :00407F6F   
  60. |:00408AE4   , :0040F655   , :0040F82B   , :0040F8D7   , :00435F31   
  61. |:0044154F   , :00441567   , :0045151C   
  62. |
  63. :00436010 83EC04                  sub esp, 00000004
  64. :00436013 53                      push ebx
  65. :00436014 56                      push esi
  66. :00436015 E8461CFFFF              call 00427C60                   <-- Prints insert the CD stuff
  67. :0043601A A164E05900              mov eax, dword ptr [0059E064]
  68. :0043601F 85C0                    test eax, eax
  69. :00436021 741D                    je 00436040                     <-- Force this jump to contiune
  70.  
  71. * Reference To: KERNEL32.Sleep, Ord:023Ah                         <-- This doesn't look good!!!
  72.                                   |                               <-- We want to skip this part...
  73. :00436023 8B35B8B48100            mov esi, dword ptr [0081B4B8]
  74.  
  75. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  76. |:0043603E(C)
  77. |
  78. :00436029 6A64                    push 00000064
  79. :0043602B FFD6                    call esi
  80. :0043602D E8AE000000              call 004360E0
  81. :00436032 E8591CFFFF              call 00427C90
  82. :00436037 A164E05900              mov eax, dword ptr [0059E064]
  83. :0043603C 85C0                    test eax, eax
  84. :0043603E 75E9                    jne 00436029
  85.  
  86. * Referenced by a (U)nconditional or (C)onditional Jump at Address:  <-- Getting here continues the game
  87. |:00436021(C)
  88. |
  89. :00436040 8B442410                mov eax, dword ptr [esp+10]
  90. :00436044 8A4C2418                mov cl, byte ptr [esp+18]
  91. :00436048 A35CE05900              mov dword ptr [0059E05C], eax
  92. :0043604D 84C9                    test cl, cl
  93. :0043604F 7424                    je 00436075
  94. :00436051 8B742414                mov esi, dword ptr [esp+14]
  95. :00436055 56                      push esi
  96. :00436056 E8150A0000              call 00436A70
  97. :0043605B C70564E0590000000000    mov dword ptr [0059E064], 00000000
  98. :00436065 83C404                  add esp, 00000004
  99. :00436068 83F801                  cmp eax, 00000001
  100. :0043606B 1BC0                    sbb eax, eax
  101. :0043606D 23C6                    and eax, esi
  102. :0043606F 5E                      pop esi
  103. :00436070 5B                      pop ebx
  104. :00436071 83C404                  add esp, 00000004
  105. :00436074 C3                      ret
  106.  
  107.     First off, there are too many calls to this section of code to trace each one and
  108. determine which is/are responsible for the CD check directly.  So, instead we'll make our
  109. edit to this section of code.  Alright, what do we need to do to make a runnable version
  110. without the CD in the drive?  Let's see, first we don't want the call to the "insert CD"
  111. routine to be taken so we'll NOP it out.  Next you have to force the conditional jump at
  112. 00436021 to always be taken.  This is done by changing it from je (jump equal) to jmp
  113. (unconditional jump).  Seems fairly simple with a little help, doesn't it?  The actual
  114. edits to be made are as follows:
  115.  
  116.  
  117. Edit PANDY.EXE (standard version) at offset 189,925
  118. =====================================================
  119. Search for: E8 F6 3B 01 00 A1 D4 2B 59 00 85 C0 74 1D
  120. Change to : 90 90 90 90 90 -- -- -- -- -- -- -- EB --
  121.  
  122. Edit PANDY3.EXE (3Dfx version) at offset 218,133
  123. =====================================================
  124. Search for: E8 46 1C FF FF A1 64 E0 59 00 85 C0 74 1D
  125. Change to : 90 90 90 90 90 -- -- -- -- -- -- -- EB --
  126.  
  127.   It goes without saying that you loose the CD music, Logos and intros AVI's and when you
  128. finish the game you don't see the finishing AVI (outros.avi).   However when the CD is present
  129. the program will make use of it.
  130.  
  131. Not too hard to FiX Pandemonium was it?
  132.  
  133. Static Vengeance
  134.  
  135. Cheat code for 14 ankhs, 8 hearts, any level and special weapon:
  136. ------------------------
  137. AOIMFPIJ        Fire
  138. AOEMDPIJ        Ice
  139. AOMMHPIJ        Shrinker
  140.